package main.栈;

import java.util.ArrayDeque;
import java.util.Deque;

/**
 * @author tmh
 * @date 2024/7/21 23:19
 * @description
 */
public class T20有效的括号 {
    public boolean isValid(String s) {
        Deque<Character> deque=new ArrayDeque<>();
        for (char c : s.toCharArray()) {
            if(c=='('){
                deque.push(')');
            }else if(c=='['){
                deque.push(']');
            }else if(c=='{'){
                deque.push('}');
                //用一个例子来说明下面的判断：")"  "(]"
                //如果直接来一个右括号，那么deque就为空，返回false
                //如果先来一个左括号，deque里面存的就是一个右括号)，此时再来一个],但是deque里面的)和]不一样
                //说明字符串少了一个左中括号，括号不匹配，返回false
            } else if (deque.isEmpty()||deque.peek()!=c) {
                return false;
            }else {
                deque.pop();
            }
        }
        return deque.isEmpty();
    }
}
